Вход

Просмотр полной версии : Событие по нажатии двух клавиш клавиатуры.


lancer
15.02.2008, 03:38
Здравствуйте, Уважаемые Эксперты.

Возможно кроссбраузерно отследить событие нажатия (Ctrl или Shift или Alt) + какая либо буква?
Или события данной категории целиом заняты ОС и браузерами, и для JavaScript недоступны?

Спасибо.

Илья Кантор
15.02.2008, 22:18
Не все заняты. Те, которые свободны - можно.. Еще зависит от того, какие плагины в браузере стоят.

lancer
19.02.2008, 08:12
Вы рекомендуете, или сами применяли организацию некоторых функций сайта посредством горячих клавиш? Я, конечно, понимаю, что в 99.9% этого делать не стоит, я имею ввиду исключительные случаи.
В силу того, что плагины для браузеров пишутся самые разные, я подумываю эту идею оставить.

Илья Кантор
19.02.2008, 12:59
Использовал горячие клавиши иногда как дубликат функций. Использовать можно, только лучше избегать очевидно занятых комбинаций.

Dmitry A. Soshnikov
25.02.2008, 13:49
lancer,
Возможно кроссбраузерно отследить событие нажатия (Ctrl или Shift или Alt) + какая либо буква?
конечно, объект события несет информацию и о shift'e и о ctrl'e и об alt'e.

<script type="text/javascript">
document.onkeydown = function(e) {
e = e || window.event;
if (e.shiftKey && e.keyCode == 65) {
alert('Shift + A');
}
return true;
}
</script>

Илья Кантор,
Те, которые свободны - можно..
можно и те, которые "заняты" (например, Crtl + S - обрабатывается браузером как "сохранить документ", но если предотвратить дефолтные события и их баблинг - то можно назначить свой Ctrl + S. Аналогично с остальными "занятыми" комбинациями).

hogart
22.04.2008, 22:02
Можно-можно. Например, в википедии ловятся вообще Shift+Esc+T и т.п.

Гость
22.04.2008, 22:44
Очень извиняюсь, что не по теме, никто не подскажет, если через кнопку и скрипт, в ячейку таблицы загружать с помощью innerHTML картинку то:
она будет подгружаться (ИМЕЕТСЯ ВВИДУ В НАЧАЛЕ, ВМЕСТЕ СО СТРАНИЦЕЙ) при загрузке страницы, или потом, при нажатии кнопки.

hogart
23.04.2008, 01:55
при загрузке страницы, или потом, при нажатии кнопки
Ну, если код подгрузки картинки указан в обработчике события click на кнопке, то при нажатии кнопки.
Если вы хотите, чтобы она загрузилась при загрузке страницы, а потом сразу показалась, то тогда код ее загрузки надо поместить в window.onload.
Что-то вроде
window.onload = function() {
var myimg = new Image();
myimg.src = "путь/к/картинке.jpg"; //картинка загружена, но нигде не показывается
}
а потом

mybutton.onclick = function() {
mytd.innerHTML = myimg;
}

Londeren
14.05.2008, 19:03
во всех браузерах код <script type="text/javascript">
document.onkeydown = function(e) {
e = e || window.event;
if (e.shiftKey && e.keyCode == 65) {
alert('Shift + A');
}
return true;
}
</script>
отлично ловит данное событие
пытался таким же образом ловить ctrl+enter, в ie6 у меня не вышло, подскажите плиз код рабочий для этого дела

murloc knight
08.04.2016, 14:32
пожалуйста помогите я делаю игру и мне надо чтоб 2 игрока ходили одновременно но при зажатии 2 клавиш считываитса только нажатие 1 клавиши и ходит только 1 игрок

вопрос :
как сделать так чтоб при зажатии 2 клавиш 2 функции выполнялись одновременно ? :help:

Дмитрий_Skilltek
04.01.2017, 08:52
Отследить нажатие любых клавиш одновременно , можно даже сто отследить вместе)))

keys={ //кей коды клавиш
w:87,
a:65,
s:83,
d:68
}
key={}
onkeydown=function(e){
key[e.keyCode]=true;
}
onkeyup=function(e){
key[e.keyCode]=false;
}
setInterval(function(){
if(key[keys.w] && key[keys.a] && key[keys.d]){ //если нажата клавиша w , a и d
alert("Сработало!!!");
}
},1)
но после алерта нужно обновлять клавиши , а то отпускание клавиши не отследится ...

keys={ //кей коды клавиш
w:87,
a:65,
s:83,
d:68
}
key={}
onkeydown=function(e){
key[e.keyCode]=true;
}
onkeyup=function(e){
key[e.keyCode]=false;
}
setInterval(function(){
if(key[keys.w] && key[keys.a] && key[keys.d]){ //если нажата клавиша w , a и d
key.w=key.a=key.d=false;
alert("Сработало!!!");
}
},1)

Дмитрий_Skilltek
08.01.2017, 14:11
пожалуйста помогите я делаю игру и мне надо чтоб 2 игрока ходили одновременно но при зажатии 2 клавиш считываитса только нажатие 1 клавиши и ходит только 1 игрок

вопрос :
как сделать так чтоб при зажатии 2 клавиш 2 функции выполнялись одновременно ? :help:

Javascript:
key={}
onkeydown=function(e){
key[e.keyCode]= true; //клавиша которая нажата равна true
}
onkeyup=function(e){
key[e.keyCode]= false; // клавиша которая отпущена равна false
}


Проверка
if(key[87]){
// W - нажата
}

Но этот код записывает ключи клавиш(W-87) , чтобы провенить K-узнай её ключ :
onkeydown=function(e){
alert(e.keyCode); //чтоб узнать ключ
}